/**
 * 触底加载方法
 * @param parentEL 可视窗口元素，默认为浏览器可视窗口
 * @param observeEl 被监听元素
 * @param config 配置项
 */
const useBottomLoading = (parentEL = null, observeEl, config, callBack) => {
  // 可视窗口元素
  const parentEl = parentEL
  // 被监听元素
  const obEL = observeEl
  // 实例化交叉观察器构造函数
  const interSection = new IntersectionObserver((entries) => {
    const isIntersection = entries[0].isIntersecting
    if(isIntersection) {
      if(Object.prototype.toString.call(callBack) === '[object Function]') {
        callBack()
      } else {
        throw Error('please set callback')
      }
    }
  }, {
    root: parentEl, // 自定义dom或者null (null为浏览器可视窗口)
    threshold: config.threshold // 目标元素针对于可视窗口可见度为多少时触发回调 0-1 => 0%-100%
  })
  // 开始监听
  interSection.observe(obEL)
}

export { useBottomLoading }
